Берешь, заходишь в Менеджер импорта (F12 вроде), ищешь свою модель, это легко сделать. Тогда ПКМ -> Експортировать и следи, чтобы расширение файла било mdx.
Ты експортировал модель. Также ескпортируй все эти tga, как оказалось сама модель их требует и без них не даже в редакторе не откроется.
Теперь в новой карте в менджере импорта импортируешь модель и все tga. Прописываешь для всех tga и модели те же пути, иначе может не запустится.
Тогда пункт верхнего меню в основном окне редактора Дополнительно -> интерфейс, ищешь "Модель - кнопка приказа(перезарядка)" и меняешь на свою. Всё готово.
Для отображения интерфейса необходима только модель, не нужно для ее роботы новых текстур.
ВарКрафт ссылается на модели для отображения гемплея, а в свою очередь модели ссылаются на текстуры.
Хитрость в том что можна создавать 15 моделей с одинаковыми текстурами.
Насколько я помню анимация рубится с SetUnitX только если она установлена через SetUnitAnimation.
Если юзать SetUnitAnimationByIndex, все должно быть нормально.
Давай разберём моё решение (ответ номер 2), я его не раскрыл полностью потому что ждал наводящих вопросов, но ты его проигнорировал, потому что не понял ни слова?
Ответ номер 3, тебе рассказали тоже самое, но более расширенно и даже карту приложили
Ответ номер 8, про спеллбуки, снова тоже решение отлично, но ты его игнорируешь и спрашиваешь про постройку зданий альянса
Не понятно что такое спеллбук? (это дефолтный скил предмета "книга заклинаний"), мы же тебя не тролим, а отвечаем конкретными решениями, но если у тебя настолько глобальное непонимание, что ты даже не знаешь как задать следующий вопрос, мб тебе не стоит заниматься варкрафт моддингом?
И ТУТ не надо быть программистом, просто тыкаешь кнопочки и задаешь след вопросы:
А что такое этот ваш спеллбук спеллбук?
а как мне добавить 4?
а как сделать чтобы не было слияния заклинаний
а как сделать, чтобы по активации заклинания происходило изучение исследования?
а продажу юнита?
а каст способности?
а постройку?
Мы не бежим тебе делать готовую карту/наработку ибо:
на это нужно время, даже продвинутым (от получаса до 3х в зависимости от концентрации)
карту можно сделать а ты пропадёшь даже лайк не поставив или даже не прочитав
получи ты готовое, то ты вообще ничего не поймёшь тогда и станешь паразитом, человеком который отнимает время других людей и эти люди делают ему карту по чуть чуть, есть люди, которые занимаются таким паразитизмом около 10 лет, не буду говорить имена, меня сразу все поняли о ком я
Ась, что кого? для 126 отслеживание выделения в группе только на мемхаке, чистый 126 лесом, на рефордже через GetChild, вот ссылка, надо скопипастить на русском на Xgm
Но если принебречь этим множественным выбором и представить что выбор единичный
Тогда на гуи всё есть и получиться
C - Юнит выбран
У - Юнит такой-то, способность такая то есть, владелец выбранного=владелец выбирающего
Д -
set s = "" s = string
if p = GetLocalPlayer() then
set s = "Тут\\Типа\\Адрес\\Модели.mdx"
endif
call СоздатьСпецэффект(s,x,y) x,y - координаты, либо вместо них точка, либо виджет
а если по поводу вопроса
Но не понимаю, как именно применить тут эту систему
Система уже расписана, суть в том что у локального игрока создастся эффект с моделью, а у остальных с пустышкой и они ничего не увидят
set s = "" s = string пустышка
if p = GetLocalPlayer() then -- если локальный игрок тогда
set s = "Тут\\Типа\\Адрес\\Модели.mdx" -- модель уже не пустышка
И в чём смысл делать глобалку, а не просто писать тогда уж сразу GetFilterUnit( )
Я сдеал локалку, чтобы вместо GetFilterUnit( ) писать то, что мне нужно, в данном случае CLONE quq_CCCP:
Потом клонов от способностей ищут не так,
Да так и я их могу найти
Точнее не совсем так, я их искал через Юнит входит в Область ( Игровая зона )
Но искать их в другом триггере и сдругим событием мне нафиг не нужно.
Мне нужно найти иллюзии сразу в триггере со способностью, чтобы потом не было геморроя
========================
И ещё раз повторюсь, что при повторном использовании способности, 2 прошлые иллюзии (да и вообще в принципе если рядом с гером будут другое любое ко-во иллюзий) перемещаются к противнику. Но две новосозданные остаются на месте.
Так же повторюсь, что когда проверка была IsUnitIllusion == false, то иллюзии определяло как не иллюзии!
Все кто пытались помочь, похоже проигнорировали это замечание...
========================
Мой вывод таков: Иллюзиям, призванным через стандартную Способность (Предмет: Иллюзии) присваивается статус иллюзий слегка позже, чем происходит проверка.
С другой стороны, скорее всего это может и можно как-то обойти, ведь есть карты примеры, где подобное работает нужным образом.
О том, как устроены чёртовы способности близов стоит только догадываться =\
К счастью Способность (Предмет: Иллюзии) не наносит 0.00 урона, и за это близам огромное спасибо (что у меня в очередной раз не бомбануло)
А вообще, проще по-моему сделать свою игру, чем нормальную карту в варкрафте -_-
Нашёл систему, где звук передаётся в таймер, который истекает через 0 секунд. В результате один и тот же звук может проигрываться несколько раз без всяких проблем. В инетике пишут мол это такой баг движка.
Лучше сделать не чтобы орда добиралась до здания , а чтобы уничтожала его. Иначе будут люди , которые просто будут идти напролом и какой то юнит всё равно пройдет и активирует победу.
Порча это особый тип земли, который распространяется поверх обычной (заменяя её).
И поэтому в игре тайлы порчи часто могут занимать ещё и соседние участки.
Оптимальный вариант уйти от этой механики - заменить стандартный тайл порчей (текстуру подменить)... т.е. вместо "травы" будет текстура "порчи" (так можно сразу 2-3 порчи в одну карту добавить).
мб отслеживать приказы, какие приказы будут у работника по 100% хп здания?
Или дамиком построить здание, и отказатся строить, у всех игроков - работники альянса (иначе это не пашет) при ремонте здания союзника, если больше никтот не чинит, здание делать за того кто чинит, если бросил чинить (работник отдал любой другой приказ или умер) вернуть в нейтрала, ну и так далее.
Macghoul, с помощью триггеров, конечно возможно - в доте же как то сделали?
Но если вы вчера уселись за редактор - вам рано думать о таком, по сути метеорит инвокера - это два юнита, один падающий камень, второй катящийся. Сама кнопка - основана на способности - Канал, т.е просто кнопка для тыканья, которая грубо говоря кроме как тратить ману и указывать цель ни на что ни годна. При нажатии кнопки создается юнит с моделю падающего метеорита (вроде модель лежит в архивах игры, для роликов кампании юзалось как эффект), потом стоит таймер 1.35 сек, который как раз формирует задержку чтобы метеорит визуально упал, после пеовый метеорит удаляется и создается второй, которого двигают и наносят урон всем юнитам вокруг, отдельная система из триггера формирует дебафф горения от метеорита. Там все на jass и средний уровень кодерства, вокер не очень простой герой для копипаста, лучше скопируйте леорика или ликана.
Всё по старому, даммикаст + способов реализаци куча. Самое главное это отследить событие ядовидой ловушки, тут 3 самых очевидных варианта:
Ловушка умерла, значит активировалась, если же сделано на основе колдовской оглушающей ловушки
Вражеский юнит вошел в зону ловушки
Периодическим триггером перебираем юнитов вокруг ловушки в момент её установки и до тех пор пока они жива, как только найден враг ловушка активирована.
Все 3 варианта в свей степени верны и имеют место быть, тут уже зависит от того в какой врубишься
Ну и действие.
Даммикаст отравленного ножа или любого другого яда на каждого юнита в зоне поражения
О дамми кастах всё находим через поиск
A) Текстуру модели бросил с правильным путем в папку вара а в карту не импортировал или не изменил путь на правильный
Б) Если дерево стандартное то у него много вариаций а модель теперь другая без вариаций (???)
Держи. Там были использованы несколько лишних текстур (я так понимаю из вова).
Один вопрос, тупа интересна - что ты делал? "Чего только не делал, однако всё об стенку горох."
В целом ты прав, что текстура не должна много весить, но это необязательно. К тому же конкретно трудно выбрать лучший вариант, может быть сильное сжатие больше напрягает процессор, а потеря качества будет заметна в игре. Но определённо любая текстура в игре не должна быть размером больше 512х512, большего размера будут лишь терять в качестве при отображении, при этом для моделей оптимальным будет размер 256х256, так как 512х512 используется в основном для интерфейса и загрузочных экранов, то есть при максимально необходимой детализации. Размеры текстуры должны быть степенью двойки: 512\256\128\64\32\16\8\4\2, чтобы игра не вылетала, если настройки графики не максимальные, а такое бывает при установке игры по умолчанию, либо после переустановки винды. При сохранении в BLP Laboratory нужно выбирать blp1, так как blp2 вроде предназначен для WoW и может не отображаться в варике, при этом опыт привёл меня к заключению, что лучше сохранять текстуры с качеством 75%, а не 80%, так как это заметно делает размер меньше, но почти никогда не заметить потери качества. Но это не оптимальный вариант, однажды встречал текстуру отличного качества и меньшего размера, которая занимала больше места и явно теряло качество, когда сохранял её со своими параметрами, не смог понять, как это сделали.
Потому что варик не воспринимает анимации с вымудренными названиями. Переименовывай их в mdlvize под корректные, используя, например, spell one/two/three/four/five spell channel + эти же 1-5, spell slam, и радуйся жизни.
фатал после игры может быть вызван
а) использованием malloc
б) копированием внутриигровых структур (например, структуру сплеша перенес от одного юнита другому, при чистке один раз адрес зачистился, а на втором проходе произошел краш)
в) неизвестным мне образом
Ну содержимое у restore само собой разное, в детекте урона новый хук на выход, вам нужна функция загрузки библиотеки?
Это же дело над:
function LoadLibrary takes string nDllName returns integer
if pLoadLibraryA == 0 then
set pLoadLibraryA = GetModuleProcAddress("Kernel32.dll", "LoadLibraryA" )
endif
if pLoadLibraryA != 0 then
return CallStdcallWith1Args(pLoadLibraryA,GetStringAddress(nDllName))
endif
return 0
endfunction
там по максимуму разжевано
А как пользоваться?
Да никак, потому что нет мемхаке смены Описания Предмета, есть только смена описания способности...Но она фаталит при смене способности выше 2 уровня, А для второй не завезли
Но если разобраться можно самому всё сделать
По примеру способности это выглядело бы так
Если функция такая
function SetAbilityUbertip takes integer id, integer lvl, string s returns boolean
return SetAbilityStringParam2(id,0x158, s, lvl)
endfunction
То чтобы поменять описание надо было сделать
SetAbilityUbertip(ID способности или предмета, уровень (для предмета не будет уровня), описание)
quq_CCCP, если я не прав, то покажи функцию смены тултипа предмета для любой версии
А ещё судя по тому что смена тултипа не предусматривает юнита или конкретный хендл предмета, значить описание меняется глобально, и нужно использовать либо Гетлокал плеер либо работать с разными копиями предмата/способности
Всё тоже самое применимо к смене описания на Рефордж патче, но там по проще это всё делается
"Набор звуков" нельзя сделать через триггеры, но можно попробовать через импорт файлов заменить стандартные файлы в уже существующих наборах.
Для этого импортируемому файлу надо прописать путь заменяемого.
Это особенность патча 1.30, на 1.26 всё нормально с этим. Может быть попробовать поменять приоритет кампании в файле priority, в статье про mix-архив это подробнее описано.
Да, но обычно в WME в редакторе узлов удаляется ненужные эффекты*скрин 1 и 2*. Если попробуешь убрать только текстуры*скрин 3* получится кубики вместо молнии*на скрине 4 видно*. Поэтому надо удалять эффекты.
Я удалил у модели эффекты, и загрузил , если надо .
Смотришь в слк файле код молнии и текстура.
Импортируешь все по нужным путям.
Потом вводишь код через шифт(это важно!) энтер в поле эффекты молний.
Если сделал все правильно, то появится текстовое поле, вместо того что обычно показывает РО.
Потом уже вводишь код молнии, а потом уже сохраняешь карту и проверяешь в игре.
Если молния отображается, значит все верно сделал.
Каждый раз по прошествии этого самого определённого промежутка времени пикаешь (Отряд - Pick Every units...) нужных (всех?) тебе юнитов, при условии что они находятся в нужной области, а после мгновенно перемещаешь в другую область.
Через что уничтожаешь? Если через килл, то конечно умирает и нейтральный.
Если наносить от какого-то даммика урон в мильены, то не умрет нейтральный.
Можно от даммика развеяние нежити за 0.01 сек.
Заменять можно, внося значение золота в переменную и потом, создавая новый рудник, ставить количество золота в него из переменной, благо это даже в ГУИ реализовано.
печатать стену текста проще чем нажать принт скрин и прикепить скриншот?
явно же где то накосячили из-за невнимательности.
давайте договоримся, прежде чем создавать тему с нерабочим триггером вы проводите сами дебаг этого триггера, а затем уже если не поняли где ошибка, делаете вопрос
Как выяснилось у Близард формат карт нормалей немного другой. Красный и зелёный канал поменяны местами, причём красный(который зелёный) ещё и инвертирован. Это и не OpenGL и не DirectX. Зачем они так сделали - вопрос открытый.
BartSi, очень странно.
Нашёл проблему. В редакторе ландшафта нужно выбрать Camera Palette (там где юниты, декорации и прочее) выбрать первую строчку (камера без имени) и удалить. Тогда проблема решится. Сбросил триггеры и удалил камеру.
Ошибка из-за того, что у камеры почему-то пустое имя. Из-за этого её переменная оканчивается на _, что нельзя в JASS.
Можно попробовать достать актуальный TriggerData.txt, дополнить его UMSWE триггерами и скормить редактору включив локальные файлы. Но я не гарантирую работоспособность этого метода.
Также есть небольшой шанс что в рефорже будет способ подсунуть редактору TriggerData.txt без локальных файлов, но сильно на это рассчитывать не стоит.
Razor_dex, сконвертируй карту, потом открой в стандартном 1.26 редакторе, удали комментарий Рок Лии\Otome Renge
Для гуи-гигантов это типичная болячка, просто битый комментарий который содержит в себе информацию о нескольких действиях, считай как обычный триггер только отображается как комментарий
Возникает такое скорее всего при копировании
P.S. странно что редакторы до 1.31 не обращают внимания на такой баг
Возможно проблема в способностях или строках, близзарды че только не сломали и нужно ждать стабильной версии игры где вылечат 99% глюков, багов и завезут максимальную совместимость со старыми картами.
lll_Kirito_lll, тут задают вопросы касательно того что делается в ве
в данном случае это твой проект и в нём ошибка
а так как телепатов тут нету то нужен проект
в общем либо карту либо клоз тему
надоели уже
ведёте сверхсекретные разработки и просите исправить ваши ошибки не трогая ваши карты
как мы это должны сделать?
магией?
или помолится богу чтобы он исправил
или ему тоже нельзя к вашему проекту прикасаться?
ставлю 100$ что ничего круче нубских триггеров там нету
поправка
учитывая предыдущие вопросы и комментарии афтара ставлю 200$
локальный - на машине конкретного юзера, не путать с mui/mpi (муи - действует для каждого юнита, mpi - для каждого игрока)
все баффы будут действовать, хоть их там будет штук 100 (хотя я столько еще не вешал)
тоже самое касается и тригго баффов, которые легко реализовать с помощью запрещенного спеллбука и как сказал quq_CCCP - таймера
даже если бафф не отображается, но его точно вешали на юнита - система его найдет
а если ты пытаешься сделать бафф Palus Knight из Lineage II - поиграйся с отрицательным по урону берсерком (где кстати есть и скорость бега), или со спеллом свитка скорости
хотя легче будет просто обложить юнита блокираторами прохода на время действия, потому что полную остановку сделать без костылей не удастся
quq_CCCP, т.к. не триггерно эффект накладывается то скорее всего проблема не в дровах LainMikoroso, кинь j файл карты (естественно с убранным удалением эффекта)
существует вероятность что в карте где то есть дефайны либо криво компилится
Некоторые вещи сделаны хардкодно, у огненого столба скорее всего тоже дебафф и его параметры не меняются, или меняются только у оригинала.
Близзарды много где так схалтурили, у аватара бафф нельзя настроить, хоть ты лопни, оно прописано в коде брать бафф 'BHav' и точка. У техники в баффе шипы неруба, и их тоже не убрать, только dummy.mdx подсунуть на их место.
Яд стрелы, стакаются (в основном с разным баффом) не снимаются спеллами типа - рассеять чары.
Не деспелятся баффы всех аур, бафф ANdo, а так же бафф Afrz.
Локальные переменные нельзя использовать в GUI'шных "if then else", карта просто не запустится Т.к если GUI'шные "if then else" перевести в jass, то будет функция с действиями триггера, а чуть выше функция с условиями этого же "if then else". А в этом и прикол локальных переменных, их можно использовать только в пределах функции в которой они были вызваны (созданы).
И лучше начни писать на jass, он легкий, хоть и кажется сложным после GUI
К примеру такие задачи на GUI которые буквально голову ломают - на jass делаются достаточно легко и быстро
дабы избежать конфликтов с многократными использованием
это будет проблематично на GUI
Поэтому лучше не парить голову этим, а почитать эти материалы:
Хэш таблица. Удобна и практична. Кстати, не забудь создать глобальную переменную Hash, типа хэш-таблица и при инициализации карты инициализировать Hash, иначе не будет работать.
function Trig_HealImp_Timer takes nothing returns nothing
local timer t = GetExpiredTimer()
local integer hid = GetHandleId(t)
local unit caster = LoadUnitHandle(udg_Hash, hid, 0) //Наш юнит хранится по ссылке "0", вытаскиваем его, чтобы с ним работать
local integer i = LoadInteger(udg_Hash, hid, 1) //Счетчик
local real hp1 = GetUnitState(caster, ConvertUnitState(0)) //текущее здоровье
local real hp = GetUnitState(caster, ConvertUnitState(1)) //максимальное здоровье
local real chp = (hp/100)*0.8 //значение, на которое лечим юнит
if i != 50 then //Срабатывание таймера 0,1. Так как длительность лечения составляет 5 сек, то таймер должен сработать 50 раз. Кстати, исходя из этого, высчитываем chp.
set i = i + 1 //Увеличиваем значение счетчика
call SetUnitState(caster, ConvertUnitState(0), hp1+chp) //лечим юнит
call SaveInteger(udg_Hash, hid, 1, i) //Сохраняем новое значение счетчика. Если этого не будет, счетчик вечно будет равен 0.
else //Когда счетчик равен 50, мы останавливаем таймер и чистим Хэш
call PauseTimer(t)
call DestroyTimer(t)
call FlushChildHashtable(udg_Hash, hid)
endif
set t=null
set caster = null
endfunction
function Trig_HealImp_Actions takes nothing returns nothing
local timer t = CreateTimer() //Таймер
local integer hid = GetHandleId(t) ) //Id таймера
local unit caster =GetTriggerUnit() //юнит, который мы будем лечить, по факту тот, кто активировал способность
call SaveUnitHandle(udg_Hash, hid, 0, caster) //сохраняем в Хэш юнит caster с ссылкой "0".
call SaveInteger(udg_Hash, hid, 1, 0) //сохраняем значение 0 с ссылкой "1". Это будет счетчик длительности лечения.
call TimerStart(t, 0.1, true, function Trig_HealImp_Timer) //запускаем таймер.
set t = null
set caster = null
endfunction
всегда по ссылке для handle-типов, всегда по значению для остальных
изменить это невозможно
никак, использовать глобалку, куда сохранять локалку перед нулением
нет, нету
ну или аналоги всего этого есть в продвинутых редакторах, не знаю, пусть те, кто ими пользуются, скажут
» WarCraft 3 / Импорт интерфейса
» WarCraft 3 / Анимация, да-да
» WarCraft 3 / Постройка альянса
» WarCraft 3 / нужно модел из 1.26
» WarCraft 3 / как создать способность 2.0
» WarCraft 3 / Как настроить такой триггер?
» WarCraft 3 / Почему?
» WarCraft 3 / РУ ЭДитор
» WarCraft 3 / Как создать способность
» WarCraft 3 / Жар преисподней (отловить урон)
» WarCraft 3 / Не отображаются модели
» WarCraft 3 / Вопрос по мемхаку.
» WarCraft 3 / Проблема с озвучкой
» WarCraft 3 / Текстура молний
» WarCraft 3 / Ресурсы карт
» WarCraft 3 / Друг
» WarCraft 3 / В чём ошибка?
» WarCraft 3 / Экспорт\импорт
» WarCraft 3 / Проги с модельками
» WarCraft 3 / Агры юнитов
» WarCraft 3 / Карта 1.31 в 1.26
» WarCraft 3 / Не отображается бафф
» Моддинг / Текстуры
» WarCraft 3 / Не стакается
» WarCraft 3 / Локальная переменная